VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "ApiDEBUGHOOKINFO"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Attribute VB_Ext_KEY = "SavedWithClassBuilder" ,"Yes"
Attribute VB_Ext_KEY = "Top_Level" ,"Yes"
Option Explicit

' ##MODULE_DESCRIPTION This class provides the properties that a DEBUG hook returns _
when a debug event occurs in the process that has been hooked.

Private Type DEBUGHOOKINFO
    hModuleHook As Long
    Reserved As Long
    lParam As Long
    wParam As Long
    code As Long
End Type

Public hModuleHook As Long
Public Reserved As Long
Public lParam As Long
Public wParam As Long
Public code As Long

Public CreatedOK As Boolean

'\\ Private memory handling functions
Private Declare Sub CopyMemoryDebugHookInfo Lib "kernel32" Alias "RtlMoveMemory" (Destination As DEBUGHOOKINFO, ByVal Source As Long, ByVal Length As Long)
Private Declare Function IsBadReadPtrDebugHookInfo Lib "kernel32" Alias "IsBadReadPtr" (ByVal lp As Long, ByVal ucb As Long) As Long
Private Declare Function IsBadWritePtrDebugHookInfo Lib "kernel32" Alias "IsBadWritePtr" (ByVal lp As Long, ByVal ucb As Long) As Long

'\\ --[CreateFromPointer]---------------------------------------------
'\\ Fills this DebugHookInfo object from the location poiunted to by
'\\ lpDebugHookInfo
'\\ VB.NET Porting note: This function should be replaced with an override
'\\ of the New() for correctness
'\\ ----------------------------------------------------------------------------------------
'\\ (c) 2001 - Merrion Computing.  All rights  to use, reproduce or publish this code reserved
'\\ Please check http://www.merrioncomputing.com for updates.
'\\ ----------------------------------------------------------------------------------------
Friend Function CreateFromPointer(lpDebugHookInfo As Long) As Boolean

Dim ftThis As DEBUGHOOKINFO

CreatedOK = False

If Not IsBadReadPtrDebugHookInfo(lpDebugHookInfo, Len(ftThis)) Then
    Call CopyMemoryDebugHookInfo(ftThis, lpDebugHookInfo, Len(ftThis))
    If Err.LastDllError = 0 Then
        With ftThis
            code = .code
            hModuleHook = .hModuleHook
            lParam = .lParam
            Reserved = .Reserved
            wParam = .wParam
            If Err.LastDllError = 0 Then
                CreatedOK = True
            End If
        End With
    End If
End If

CreateFromPointer = CreatedOK

End Function

